home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / bin / update-pciids < prev    next >
Text File  |  2009-10-05  |  3KB  |  147 lines

  1. #!/bin/sh
  2.  
  3. # update-pciids.sh is licensed under the GNU General Public License
  4. # (GPL) version 2 or above.
  5. # Copyright (C) 2008  Anibal Monsalve Salazar <anibal@debian.org>
  6. # This program is free software: you can redistribute it and/or modify
  7. # it under the terms of the GNU General Public License as published by
  8. # the Free Software Foundation, either version 2 of the License, or
  9. # (at your option) any later version.
  10. # This program is distributed in the hope that it will be useful,
  11. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. # GNU General Public License for more details.
  14. # Please read the "COPYING" file in the archive root, or visit
  15. # http://www.gnu.org/licenses/gpl.html, for information about the GPL.
  16. #
  17. # This scipt is a rewrite of a script with the same name by
  18. # Martin Mares.
  19.  
  20. set -e
  21.  
  22. URL="http://pciids.sourceforge.net/v2.2/pci.ids"
  23. FILE=/usr/share/misc/pci.ids
  24.  
  25. RM="/bin/rm"
  26. MV="/bin/mv"
  27. SED="/bin/sed"
  28. GREP="/bin/grep"
  29. GZIP="/bin/gzip"
  30. ECHO="/bin/echo"
  31. CHMOD="/bin/chmod"
  32. GUNZIP="/bin/gunzip"
  33. BUNZIP2="/bin/bunzip2"
  34. TOUCH="/usr/bin/touch"
  35. PERL="/usr/bin/perl"
  36. WGET="/usr/bin/wget"
  37. CURL="/usr/bin/curl"
  38. LYNX="/usr/bin/lynx"
  39.  
  40. NEWFILE="$FILE.new"
  41. OLDFILE="$FILE.old"
  42.  
  43. if [ "$1" = "-q" ]
  44. then
  45.     quiet="yes"
  46. else
  47.     quiet="no"
  48. fi
  49.  
  50. if ! $TOUCH $NEWFILE > /dev/null 2>&1
  51. then
  52.     $ECHO >&2 "update-pciids: $NEWFILE is read-only"
  53.     exit 1
  54. fi
  55.  
  56. [ -f $NEWFILE ]     && $RM $NEWFILE
  57. [ -f $NEWFILE.bz2 ] && $RM $NEWFILE.bz2
  58. [ -f $NEWFILE.gz ]  && $RM $NEWFILE.gz
  59.  
  60. if [ -x $BUNZIP2 ]
  61. then
  62.     EXT=".bz2"
  63.     UNZIP=$BUNZIP2
  64. elif [ -x $GUNZIP ]
  65. then
  66.     EXT=".gz"
  67.     UNZIP=$GUNZIP
  68. else
  69.     $ECHO >&2 "update-pciids: cannot find bunzip2 or gunzip"
  70.     exit 1
  71. fi
  72.  
  73. if [ -x $WGET ]
  74. then
  75.     $WGET -nv -O $NEWFILE$EXT $URL$EXT > /dev/null 2>&1
  76. elif [ -x $CURL ]
  77. then
  78.     $CURL -o $NEWFILE$EXT $URL$EXT > /dev/null 2>&1
  79. elif [ -x $LYNX ]
  80. then
  81.     $LYNX -source $URL$EXT > $NEWFILE$EXT
  82. else
  83.     $ECHO >&2 "update-pciids: cannot find wget, curl or lynx"
  84.     exit 1
  85. fi
  86.  
  87. $UNZIP < $NEWFILE$EXT > $NEWFILE
  88. $RM $NEWFILE$EXT
  89.  
  90. if ! $GREP > /dev/null "^C " $NEWFILE
  91. then
  92.     $ECHO >&2 "update-pciids: missing class info, probably truncated file"
  93.     exit 1
  94. fi
  95.  
  96. date=$($GREP "^#.*Date:" $NEWFILE 2> /dev/null | $SED "s/^#.*Date://")
  97.  
  98. if [ -z "$date" ]
  99. then
  100.     $ECHO >&2 "update-pciids: missing snapshot date, probably truncated file"
  101.     exit 1
  102. fi 
  103.  
  104. # Reduce by removing subsystem ids and comments
  105. if [ -n "$BASH_VERSION" ]
  106. then
  107.     #$GREP -Ev ^$'\t\t'"|^\s*$|^\s*#" $NEWFILE | $GZIP -9 > $NEWFILE.gz
  108.     $GREP -Ev ^$'\t\t'"|^\s*$|^\s*#" $NEWFILE > $NEWFILE.tmp
  109.     mv $NEWFILE.tmp $NEWFILE
  110. else
  111.     #$PERL -ne 'print unless /^(\s*#|\s*$|\t\t)/' < $NEWFILE | $GZIP -9 > $NEWFILE.gz
  112.     $PERL -ne 'print unless /^(\s*#|\s*$|\t\t)/' < $NEWFILE > $NEWFILE.tmp
  113.     mv $NEWFILE.tmp $NEWFILE
  114. fi
  115.  
  116. #$RM $NEWFILE
  117.  
  118. if [ -f $FILE ]
  119. then
  120.     [ -f $OLDFILE ] && $RM $OLDFILE
  121.     $MV $FILE $OLDFILE
  122. fi
  123.  
  124. $MV $NEWFILE $FILE
  125. $TOUCH -d "$date" $FILE
  126.  
  127. if [ -f $FILE.gz ]
  128. then
  129.     #$CHMOD -f --reference=$FILE.gz $NEWFILE.gz 2> /dev/null || true
  130.     [ -f $OLDFILE.gz ] && $RM $OLDFILE.gz
  131.     $MV $FILE.gz $OLDFILE.gz
  132. fi
  133.  
  134. #$MV $NEWFILE.gz $FILE.gz
  135. #$TOUCH -d "$date" $FILE.gz
  136.  
  137. if [ $quiet = "no" ]
  138. then
  139.     $ECHO "Downloaded daily snapshot dated $date"
  140. fi
  141.  
  142. exit 0
  143.